#ifndef _CLIENT_H_
#define _CLIENT_H_

#include <stdio.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

#define ADDR "127.0.0.1"     //服务器地址
#define PORT 9999               //要开放的端口

#define N 128
#define ERRLOG(errmsg) do{\
	                         perror(errmsg);\
	                         printf("%s --- %s --- %d\n", __FILE__, __func__, __LINE__);\
	                         exit(1);\
						 }while(0)

#define READ     1       //查询用户信息
#define CHANGE   2       //修改用户信息
#define DELETE   3       //删除用户
#define ADD      4       //添加用户
#define LOAD     5       //用户申请登录
#define QUIT     6       //用户退出时发给服务器的通知消息
#define SUCCESS  7       //服务器操作成功
#define FAILED   8       //服务器操作失败

#define STAFF    10      //普通用户权限
#define ADMIN    11      //管理员用户权限

#define USERS    15      //user select
#define USERM    16      //user modify

/******************* 登录信息 ********************/
typedef struct{
	int  type;           //判断用户权限
	char name[N];        //用户名
	char pwd[N];         //密码
	int  no;             //用户编号
}USER;

/******************* 用户信息 ********************/
typedef struct{
	char name[N];        //姓名
	char addr[N];        //地址
	int  age;            //年龄
	int  level;          //评级
	int  no;             //编号
	char phone[N];       //手机号
	int  type;           //员工级别
	double salary;       //工资
}INFO;

/******************* 通讯信息 ********************/
typedef struct{
	int  sign;           //
	int  type;           //操作类型
	char name[N];        //发送信息的用户
	INFO info;           //用户信息结构体
	char pwd[N];         //用于第一次登录时验证身份
	char data[N];        //操作成功或者失败的信息
}MSG;

/*********
 *  函数 *
 *********/

//绑定客户端信息
//int Bind_client_info(int sockfd);

//登录
int Do_login(int sockfd);

void Do_after_login(int sockfd, MSG *msg);

void Do_admin_login(int sockfd);

//添加用户信息
int Do_adduser(int sockfd);

//删除用户信息
int Do_deluser(int sockfd);

//修改用户信息
int Do_modifyuser(int sockfd, MSG *msg, int flag);

void Do_admin_modify(int sockfd);

void Do_user_modify(int sockfd, MSG *msg);

//查询用户信息
int Do_selectuser(int sockfd, MSG *msg, int flag);

#endif
